package Controlador;

/**
 *
 * @author Ddj Murillo
 */

import Modelo.Fecha;
import Modelo.ordenCompra;
import Modelo.OrdenCompraModelo;
import java.util.Iterator;
import java.util.LinkedList;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import java.sql.SQLException;
import java.sql.Date;
import java.util.Calendar;

public class ControlOrdenDeCompra {

    OrdenCompraModelo mod= new OrdenCompraModelo();
    LinkedList lista;
    DefaultTableModel tablaModelo;
    private ordenCompra ordenComp= new ordenCompra();

    public ControlOrdenDeCompra(){
        lista=new LinkedList();
        tablaModelo=new DefaultTableModel();
    }

    /**metodo para enviar una tabla y reciva una tabla
     * utilizo 2 parametros la tabla y la consulta, si la consulta es vacia
     * trae todos los datos
     * @param tabla
     * @param consulta
     * @param tipo
     * @return
     */
  public JTable cargaPedidoTabla(JTable tabla,String consulta,int tipo){
        cleanTabla(tabla);
        tablaModelo=(DefaultTableModel) tabla.getModel();
	try
	{
            lista=mod.consultaOrdenCompraTabla(consulta,tipo);
            Iterator it=lista.iterator();
            while( it.hasNext() )
            {
                ordenComp=(ordenCompra)it.next();
                tablaModelo.addRow
                (
                    new Object[]
                    {
                     ordenComp.getConsecutivo(),ordenComp.getFecha(),ordenComp.isEstado(),ordenComp.getProveedores_nit(),ordenComp.getSucursal_codigo()
                    }
                );
            }
            tablaModelo.addRow(new Object[]{});
     //       JOptionPane.showMessageDialog(null,"probando");
	}catch(Exception er){
		JOptionPane.showMessageDialog(null, "Error al cargar la lista de Pedido de la base de datos, se presento " +
                        "\n un inconveniente al tratar de Buscar la informacion requerida " +
                        "\n por el sistema." +
                        "\n."+er.toString() , "Error en la Carga de Informacion...",JOptionPane.DEFAULT_OPTION);
	}
        return tabla;
    }


  /**
   * limpia la tabla
   * @param tabla
   * @return
   */
  public JTable cleanTabla(JTable tabla){
        tablaModelo=(DefaultTableModel) tabla.getModel();
        int x=tablaModelo.getRowCount();
	for(int i=-1;i<(x-1);i++)
		tablaModelo.removeRow(0);
        return tabla;
  }

  /**
   * Obtiene el ultimo consecutivo o maximo consecutivo
   */
  public int getConsecutivo() throws SQLException{
        return mod.getConsecutivo();
  }

  /**
   * Registrar el pedido
   */
  public void registraOrdenCompra(String consecutivo,Date fecha,String proveedores_nit,boolean estado) throws SQLException{
      ordenCompra orCom=new ordenCompra(consecutivo,fecha, estado, proveedores_nit);
      mod.setNuevoPedido(orCom);
  }

   /**
   * Actualizar el pedido
   */
  public void actualizaPedido(ordenCompra ordencompra) throws SQLException{
      mod.actualizarPedido(ordencompra,ordencompra.getConsecutivo());
  }

   /**
 * consulta existencia Pedido
 * @param consecutivo
 * @return boolean
 * @throws SQLException
 */
  public boolean isExist(String consulta) throws SQLException{
      ordenCompra ordencompra=new ordenCompra();
      ordencompra=mod.consultaOrdenCompra(consulta);

      if(ordencompra.getConsecutivo()!=null)
          return true;

      return false;
  }

   /**
 * consulta Pedido
 * @param consecutivo
 * @return Pedido
 * @throws SQLException
 */
  public ordenCompra getordenCompra(String consulta) throws SQLException{
      return mod.getOrdenC(consulta);
  }

}
